In the field of computing, a virtual machine (VM) is an emulation of a particular computer system. Virtual machines operate based on the computer architecture and functions of a real or hypothetical computer. Virtual machines may be implemented using specialized hardware, software, or a combination of both.
Classification of virtual machines can be made based on the degree to which they implement functionalities of specific real machines. In this way, system virtual machines (also known as full virtualization VMs) provide a complete substitute for the specific real machine and a level of functionality required for the execution of a complete operating system.
The use of VMs provides great flexibility in the handling of tasks which are executed in parallel. Indeed, VMs can be created and deleted to meet the needs of processing tasks that evolve and change over time. Moreover, VMs provide great flexibility in creating machines with desired properties since the actual characteristics of a VM are a combination of software characteristics and characteristics of the hardware machine on which the VM is executed.
This flexibility is especially useful in multimedia processing. Multimedia tasks are known to require significant resources. Virtual machines may be created to possess resources just sufficient to execute a multimedia task. In a multimedia head-end server, VMs can be created dynamically upon the request of clients to obtain a multimedia service.
When creating a virtual machine, it is possible to adjust the parameters of the virtual machine, such as CPU, RAM, or bandwidth. The resources allocated to a virtual machine may then be reserved on the host hardware machine. For example, when creating a VM with 4 GB RAM, 4 GB of RAM will be reserved for this VM on the host hardware machine in order to ensure that the VM will have enough RAM to operate. Thus, the sum of all resources reserved by the VMs on a host machine cannot exceed the resources of the host machine, and the reservation of resources for a VM mitigates the ability of the hardware machine to host additional VMs for performing further multimedia processing.
It is advantageous to dispatch processing tasks amongst the available machines such that they have the least possible unused resources. To achieve this goal, it is desirable to obtain, for processing tasks to be executed, an evaluation of the resources needed to perform the task, and for machines, an evaluation of their available resources.
This is especially true for multimedia processing, in which many tasks are generally computationally-intense and need to be performed in real time to produce a target level of quality. For example, it is possible to encode video content with different levels of quality. More resources are usually needed for higher levels of quality. It is usually necessary to perform more complex video coding decisions to improve the quality of video at an equivalent bitrate. A VM thus needs a minimum amount of resources to perform video encoding in real time at a desired level of quality.
The usual method for defining the resources of a machine relies upon an evaluation a priori of the resources necessary to perform a task. Although this works for simple calculation tasks, it is almost impossible to calculate a priori the resources necessary to perform multimedia processing. Indeed, the ability to perform a task depends upon complex interactions between CPU, memory, and the like. Moreover, the ability to perform multimedia processing with a desired level of quality in real time is highly dependent on the content of the multimedia streams to be processed. For example, the resources necessary to encode a video scene increase with the resolution of the scene; however, the resources necessary to encode a video scene also depends upon the content of the scene. For example, video scenes comprising water and waves are known to be highly difficult to encode, both in terms of encoding time and compression levels. Other parameters such as the frame rate or encoding parameters have an impact on the resources necessary to encode a video, which renders an a priori evaluation of the performance of a machine even more difficult.
Another possible method to overcome this issue involves calculating, for a given multimedia task, the minimum required amount of resources by running the task and observing the footprint of the execution of the task. However, this method may only be used with machines with standardized configurations, and is not well suited for use with virtual machines, as by their nature virtual machines have flexibility in their allocated resources, while results in uncertainty about the actual capacity of a VM in use.